package org.example.commonapi.util;


import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;

public class FileUtil {


    /**
     * 格式化文件大小
     * @param fileS
     * @return
     */
    public static String formatSize(long fileS) {
        DecimalFormat df = new DecimalFormat("#.00");
        String fileSizeString = "";
        String wrongSize = "0B";
        if (fileS == 0) {
            return wrongSize;
        }
        if (fileS < 1024) {
            fileSizeString = df.format((double) fileS) + "B";
        } else if (fileS < 1048576) {
            fileSizeString = df.format((double) fileS / 1024) + "KB";
        } else if (fileS < 1073741824) {
            fileSizeString = df.format((double) fileS / 1048576) + "MB";
        } else {
            fileSizeString = df.format((double) fileS / 1073741824) + "GB";
        }
        return fileSizeString;
    }

    /**
     * 获取文件类型
     *
     * @param file
     * @return
     */

    public static Integer getFileType(MultipartFile file) {
        // 首先尝试从文件内容中获取MIME类型
        String contentType = file.getContentType();
        String fileType="";
        if (contentType != null) {
            // 从MIME类型中提取后缀名，例如 "application/pdf" -> "pdf"
            String[] parts = contentType.split("/")[1].split("\\+");
            fileType= parts[0].toLowerCase();
        } else {
            // 如果contentType为空，尝试从文件名中提取扩展名
            String fileName = file.getOriginalFilename();
            if (fileName != null && fileName.contains(".")) {
                fileType= fileName.substring(fileName.lastIndexOf(".") + 1).toLowerCase();
            }
        }
        if("pdf".equals(fileType))return 0;
        else if("word".equals(fileType))return 1;
        else if("excel".equals(fileType))return 2;
        else if("xbm".equals(fileType)||"tif".equals(fileType)||"pjp".equals(fileType)||"svg".equals(fileType)||"jpg".equals(fileType)||"jpeg".equals(fileType)||"ico".equals(fileType)||"tiff".equals(fileType)||"png".equals(fileType)){
            return 3;
        }
        // 如果以上方法都无法确定类型，则返回null或其他默认值
        return null;
    }

}
